In data-processing systems, there is often high data throughput. Such systems typically contain devices that need to transfer, store, or manage large quantities of data. Storage devices, for example, have the capability to store mass quantities of data that is made available to other devices in the system.
In these data-processing systems, large amounts of memory space are needed for the various transfer, storage, and management operations. Because there is such a high volume of data, it may often be difficult to mange this memory space efficiently to achieve optimal system performance. Therefore, the intelligence of such systems will often need to implement various methods of data or flow control.
In a first method, these data-processing systems will perform some form of flow control. For example, in systems that use the Small Computer System Interface (SCSI) protocol and that implement flow control, host devices are not permitted to send unsolicited data. Instead, these host devices must receive authorization (or solicitation) to send data to a target device. Such authorizations that are sent from the target devices are coined “ready-to-transfer,” or “R2T,” commands. Once a host device has received an R2T from the target, it may then (and only then) send data to the target. The systems implementing this method, or other similar methods, of flow control achieve better memory management, because memory space is not allocated for host devices until it is available for use. These systems, however, are not able to achieve as high of a performance for data throughput.
In a second method, these data-processing systems will simply allow certain devices to send commands and data to other devices without much limitation. In this method, there is no real flow control to manage data throughput. While these systems may have good performance, they may encounter memory problems. In order to allow such unconditional and unsolicited data transfer, large amounts of memory space are needed. When this memory space is not managed effectively, there will be insufficient space to hold the high volume of unsolicited data transferred in the system. When memory runs short, error recovery mechanisms will need to be put into effect.
Therefore, for the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need for the present invention.